package cn.wendellup.bootStrap.valueobject.constants;

import java.util.TreeMap;

public class EnumType {
	
	public enum AppParameterParamType {
        none(""), is_all_list("is_all_list"), is_first_online_time("is_first_online_time"), // 是否是新品标签，新品补全：最新上架时间补全
        is_net_first_online_time("is_net_first_online_time"), // 是否是网游最新标签，网游最新补全：网游最新上架时间补全
        merge_tag_id("merge_tag_id"), // 游戏推荐，补全逻辑：游戏周排行补全
        merge_net_tag_id("merge_net_tag_id"), // 网游最热：补全逻辑：网游游戏周排行补全
        merge_webgame_tag_id("merge_webgame_tag_id"), // 页游补全

        pay_code("pay_code"), network_type("network_type"), is_not_adaptation("is_not_adaptation"), // 是否不做机型适配
        is_adaptation("is_adaptation"), // 是否做机型适配
        ref_app_parameter_id("ref_app_parameter_id"), menu_page_type("menu_page_type"), // 页面类型，前端使用
        menu_type("menu_type"), // 业务类型，后端使用
        channel_page_type("channel_page_type"), channel_type("channel_type"), is_need_play_app("is_need_play_app"), // 是否是必玩应用
        is_show_tags("is_show_tags"), // 该频道下是否显示四种标签
        is_rank_day("is_rank_day"), // 日排行
        is_rank_week("is_rank_week"), // 周排行
        is_rank_month("is_rank_month"), // 月排行
        is_rank_total("is_rank_total"), // 总排行
        is_rank_free("is_rank_free"), // 总排行
        active_status_tag("active_status_tag"), // 活动标签
        new_status_tag("new_status_tag"), // 最新标签
        hot_status_tag("hot_status_tag"), // 最热标签
        first_status_tag("first_status_tag"), // 首发标签
        classic_status_tag("classic_status_tag"), // 经典标签
        ref_sort_type("ref_sort_type"), // 分类对应的排序规则
        is_not_show_no_apps("is_not_show_no_apps"), // 专题和必玩如果没有配应用则不显示
        is_new_topic("is_new_topic"), // 是否是新的专题
        classification_gamepackage("classification_gamepackage"), // 分类下游戏包
        classification_custom("classification_custom");// 自定义分类

        String value = "";

        AppParameterParamType(String value) {
            this.value = value;
        }

        public String value() {
            return this.value;
        }

        private static TreeMap<String, AppParameterParamType> _map;

        static {
            _map = new TreeMap<String, AppParameterParamType>();
            for (AppParameterParamType num : AppParameterParamType.values()) {
                _map.put(num.value(), num);
            }
        }

        public static AppParameterParamType lookup(String value) {
            AppParameterParamType obj = _map.get(value);
            if (obj == null)
                return none;
            return obj;
        }

    }
	
	public enum AppParameterType {
        all(0),

        channel(1), // 频道
        common(2), // 装机必备
        area(3), // 省份
        operationManageChannel(4), // 运营支撑管理系统菜单
        businessManageChannel(5), // 商务合作管理平台菜单
        screenpx(13), // 分辨率
        os(14), // 操作系统
        terminalGroup(23), // 机型组

        /** 7版手游使用 begin */
        v7MobileTreeType(7), v7MobileSortType(8), v7MobileActiveTagType(31), v7MobileNewTagType(32), v7MobileHotTagType(33), v7MobileFirstTagType(
                34), v7MobileClassicTagType(35);
        /** 7版手游使用 end */

        int value = 0;

        private static TreeMap<Integer, AppParameterType> _map;

        static {
            _map = new TreeMap<Integer, AppParameterType>();
            for (AppParameterType num : AppParameterType.values()) {
                _map.put(new Integer(num.value()), num);
            }
        }

        public static AppParameterType lookup(int value) {
            return _map.get(new Integer(value));
        }

        AppParameterType(int value) {
            this.value = value;
        }

        public int value() {
            return this.value;
        }
    }
	

    // 短信计费类型
    public enum SMSType {
        free(0), telecom(1), unicom(2), mobile(4), all(7);
        private int value;

        SMSType(int value) {
            this.value = value;
        }
    }

    public enum AdvLayoutType {
        // 1 滚动 2 双屏 3 单一 4 文字类布局广告
        roll(1), doub(2), single(3), word(4);

        private int value;

        AdvLayoutType(int value) {
            this.value = value;
        }

    }

    public enum FilterType {
        black(1), white(2);

        private int value;

        FilterType(int value) {
            this.value = value;
        }

        public int value() {
            return this.value;
        }
    }

    public enum FileStatus {
        none(0, "待测试"), testPassed(1, "测试通过"), testNotPassed(2, "测试未通过"), adaptationed(3, "已适配");
        int value = 0;
        String message = "";

        public String getMessage() {
            return this.message;
        }

        private static TreeMap<Integer, FileStatus> _map;

        static {
            _map = new TreeMap<Integer, FileStatus>();
            for (FileStatus num : FileStatus.values()) {
                _map.put(new Integer(num.value()), num);
            }
        }

        public static FileStatus lookup(int value) {
            return _map.get(new Integer(value));
        }

        FileStatus(int value, String message) {
            this.value = value;
            this.message = message;
        }

        public int value() {
            return this.value;
        }
    }

    public enum GameRankingKeyWordType {
        none(0), day(1), week(2), month(4), total(8);
        int _value = 0;

        private static TreeMap<Integer, GameRankingKeyWordType> _map;

        static {
            _map = new TreeMap<Integer, GameRankingKeyWordType>();
            for (GameRankingKeyWordType num : GameRankingKeyWordType.values()) {
                _map.put(new Integer(num.value()), num);
            }
        }

        public static GameRankingKeyWordType lookup(int value) {
            return _map.get(new Integer(value));
        }

        GameRankingKeyWordType(int value) {
            this._value = value;
        }

        public int value() {
            return this._value;
        }
    }

    public enum GameSortType {
        none(0), is_mouse(1), is_keyboard(2), is_remote_control(3), is_handle(4), is_sense(5), publish_time(6);

        int value = 0;
        private static TreeMap<Integer, GameSortType> _map;

        static {
            _map = new TreeMap<Integer, GameSortType>();
            for (GameSortType num : GameSortType.values()) {
                _map.put(new Integer(num.value()), num);
            }
        }

        public static GameSortType lookup(int value) {
            return _map.get(new Integer(value));
        }

        GameSortType(int value) {
            this.value = value;
        }

        public int get(String name) {
            return this.value;
        }

        public int value() {
            return this.value;
        }

    }

    public enum GameStatus {
        none(-1, "无状态"), toAudit(0, "待审核"), auditNotPassed(1, "审核未通过"), deleted(2, "已删除"), auditPassed(3, "已审核"), testPassed(4, "测试通过"), published(
                5, "已发布"), business(6, "商用"), offLine(7, "已下线"), test63(100, "测试63");

        int _value = 0;
        String _message = "";

        public String getMessage() {
            return this._message;
        }

        private static TreeMap<Integer, GameStatus> _map;

        static {
            _map = new TreeMap<Integer, GameStatus>();
            for (GameStatus num : GameStatus.values()) {
                _map.put(new Integer(num.value()), num);
            }
        }

        public static GameStatus lookup(int value) {
            return _map.get(new Integer(value));
        }

        GameStatus(int value, String message) {
            this._value = value;
            this._message = message;
        }

        public int value() {
            return this._value;
        }
    }

    public enum GameTagType {
        none(0), searchTag(1), gameParameterAppTag(2), in_tag(3), shop_search_tag(4), game_label_tag(5), systemAutoSearchTag(6), first_searchTag(
                7), first_systemAutoSearchTag(8);

        int value = 0;

        private static TreeMap<Integer, GameTagType> _map;

        static {
            _map = new TreeMap<Integer, GameTagType>();
            for (GameTagType num : GameTagType.values()) {
                _map.put(new Integer(num.value()), num);
            }
        }

        public static GameTagType lookup(int value) {
            return _map.get(new Integer(value));
        }

        GameTagType(int value) {
            this.value = value;
        }

        public int get(String name) {
            return this.value;
        }

        public int value() {
            return this.value;
        }
    }

    public enum GameType {
        none(0), tv(1), mobile(2), itv(4), web(8), wap(16), shop(32), sns(64), shopWallpaper(128), app(256), distinguish_app(512), distinguish_game(
                1024);
        int _value = 0;

        private static TreeMap<Integer, GameType> _map;

        static {
            _map = new TreeMap<Integer, GameType>();
            for (GameType num : GameType.values()) {
                _map.put(new Integer(num.value()), num);
            }
        }

        public static GameType lookup(int value) {
            return _map.get(new Integer(value));
        }

        GameType(int value) {
            this._value = value;
        }

        public int value() {
            return this._value;
        }
    }

    public enum NetworkType {
        none(0, "未分类"), offlineGame(11, "单机游戏"), onlineGame(12, "联网游戏"), webGame(20, "网页游");
        int value = 0;
        String message = "";

        private static TreeMap<Integer, NetworkType> _map;

        static {
            _map = new TreeMap<Integer, NetworkType>();
            for (NetworkType num : NetworkType.values()) {
                _map.put(new Integer(num.value()), num);
            }
        }

        public static NetworkType lookup(int value) {
            return _map.get(new Integer(value));
        }

        NetworkType(int value, String message) {
            this.value = value;
            this.message = message;
        }

        public int value() {
            return this.value;
        }

        public String getMessage() {
            return this.message;
        }
    }

    public static class ProductType {
        public static int none = 0;
        public static int recommend = 2;
        public static int newGame = 3;
        public static int chessGame = 4;
        public static int senseGame = 5;
        public static int freeGame = 6;
        public static int onlineGame = 7;
        public static int allLikeGame = 49;
        public static int searchRecommendGame = 50;
    }

    public enum SysParameterType {
        INT_CHANNEL_IS_ALL_MAX_RECORDS("INT_CHANNEL_IS_ALL_MAX_RECORDS");
        String value = "";

        SysParameterType(String value) {
            this.value = value;
        }

        public String value() {
            return this.value;
        }
    }

    public enum TerminalType {
        none(0), tv(1), phone(2), itv(4);
        int _value = 0;

        private static TreeMap<Integer, TerminalType> _map;

        static {
            _map = new TreeMap<Integer, TerminalType>();
            for (TerminalType num : TerminalType.values()) {
                _map.put(new Integer(num.value()), num);
            }
        }

        public static TerminalType lookup(int value) {
            return _map.get(new Integer(value));
        }

        TerminalType(int value) {
            this._value = value;
        }

        public int value() {
            return this._value;
        }
    }

    public enum WapType {
        none(0), simple(1), color(2), threeG(4);

        int _value = 0;

        private static TreeMap<Integer, WapType> _map;

        static {
            _map = new TreeMap<Integer, WapType>();
            for (WapType num : WapType.values()) {
                _map.put(new Integer(num.value()), num);
            }
        }

        public static WapType lookup(int value) {
            return _map.get(new Integer(value));
        }

        WapType(int value) {
            this._value = value;
        }

        public int value() {
            return this._value;
        }
    }

    public enum FeeType {
        feeSDK(1, "计费SDK"), feeSMS(2, "短信计费"), free(3, "免费"), rate(-1, "免费试玩");

        int _value = 0;
        String _message = "";

        public String getMessage() {
            return this._message;
        }

        private static TreeMap<Integer, FeeType> _map;

        static {
            _map = new TreeMap<Integer, FeeType>();
            for (FeeType num : FeeType.values()) {
                _map.put(new Integer(num.value()), num);
            }
        }

        public static FeeType lookup(int value) {
            FeeType type = _map.get(new Integer(value));
            if (type == null) {
                return rate;
            }
            return type;
        }

        FeeType(int value, String message) {
            this._value = value;
            this._message = message;
        }

        public int value() {
            return this._value;
        }
    }

    public enum PayType {
        none(-1, "请选择"), free(0, "免费"), downloadPay(1, "下载收费"), chargePay(2, "免费试玩"), payPerUse(3, "道具计费"), onLineFree(5, "免费"), payPerDownload(
                10, "下载收费");

        int _value = 0;
        String _message = "";

        public String getMessage() {
            return this._message;
        }

        private static TreeMap<Integer, PayType> _map;

        static {
            _map = new TreeMap<Integer, PayType>();
            for (PayType num : PayType.values()) {
                _map.put(new Integer(num.value()), num);
            }
        }

        public static PayType lookup(int value) {
            PayType type = _map.get(new Integer(value));
            if (type == null) {
                return none;
            }
            return type;
        }

        PayType(int value, String message) {
            this._value = value;
            this._message = message;
        }

        public int value() {
            return this._value;
        }
    }

    public enum DownloadStatus {
        download_all(0, "全部下载"), download_success(1, "下载成功"), download_install(2, "安装成功"), download_error(-1, "下载失败");
        private int _value = 0;

        private String _message = "";

        DownloadStatus(int value, String message) {
            this._value = value;
            this._message = message;
        }

        private static TreeMap<Integer, DownloadStatus> _map;

        static {
            _map = new TreeMap<Integer, DownloadStatus>();
            for (DownloadStatus num : DownloadStatus.values()) {
                _map.put(new Integer(num.getValue()), num);
            }
        }

        public static DownloadStatus lookup(int value) {
            DownloadStatus type = _map.get(new Integer(value));
            if (type == null) {
                return download_error;
            }
            return type;
        }

        /**
         * @return the _value
         */
        public int getValue() {
            return _value;
        }

        /**
         * @return the _message
         */
        public String getMessage() {
            return _message;
        }

    }

    /** 通知CP地址类型ENUM，0：短代，4：支付宝 */
    public enum CpNotifyAddressType {
        isag(0, "联网短代"), alipay(4, "支付宝");

        private int _value = 0;
        private String _message = "";

        CpNotifyAddressType(int value, String message) {
            this._value = value;
            this._message = message;
        }

        private static TreeMap<Integer, CpNotifyAddressType> _map;

        static {
            _map = new TreeMap<Integer, CpNotifyAddressType>();
            for (CpNotifyAddressType num : CpNotifyAddressType.values()) {
                _map.put(new Integer(num.getValue()), num);
            }
        }

        public static CpNotifyAddressType lookup(int value) {
            CpNotifyAddressType type = _map.get(new Integer(value));
            if (type == null) {
                return null;
            }
            return type;
        }

        /**
         * @return the _value
         */
        public int getValue() {
            return _value;
        }

        /**
         * @return the _message
         */
        public String getMessage() {
            return _message;
        }
    }

    public enum UserType {
        none(0), tourist(1), common_user(2), regist_user(3);

        private int _value = 0;

        UserType(int value) {
            this._value = value;
        }

        private static TreeMap<Integer, UserType> _map;

        static {
            _map = new TreeMap<Integer, UserType>();
            for (UserType num : UserType.values()) {
                _map.put(new Integer(num.getValue()), num);
            }
        }

        public static UserType lookup(int value) {
            UserType type = _map.get(new Integer(value));
            if (type == null) {
                return null;
            }
            return type;
        }

        public int getValue() {
            return _value;
        }

    }

    public enum GameDevelopLanguageType {
        none(0), java(1), cPlusPlus(2);

        private int _value = 0;

        GameDevelopLanguageType(int value) {
            this._value = value;
        }

        private static TreeMap<Integer, GameDevelopLanguageType> _map;

        static {
            _map = new TreeMap<Integer, GameDevelopLanguageType>();
            for (GameDevelopLanguageType num : GameDevelopLanguageType.values()) {
                _map.put(new Integer(num.getValue()), num);
            }
        }

        public static GameDevelopLanguageType lookup(int value) {
            GameDevelopLanguageType type = _map.get(new Integer(value));
            if (type == null) {
                return null;
            }
            return type;
        }

        public int getValue() {
            return _value;
        }

    }

    public enum UserFromType {
        none(0), wap(1), web(2), tv(3), sns(4), mobile(5), oldPlatForm(6);

        private int _value = 0;

        UserFromType(int value) {
            this._value = value;
        }

        private static TreeMap<Integer, UserFromType> _map;

        static {
            _map = new TreeMap<Integer, UserFromType>();
            for (UserFromType num : UserFromType.values()) {
                _map.put(new Integer(num.getValue()), num);
            }
        }

        public static UserFromType lookup(int value) {
            UserFromType type = _map.get(new Integer(value));
            if (type == null) {
                return null;
            }
            return type;
        }

        public int getValue() {
            return _value;
        }

    }

    public enum UserAccountVaildType {
        none(0), egame(1), phone(2), email(4);

        private int _value = 0;

        UserAccountVaildType(int value) {
            this._value = value;
        }

        private static TreeMap<Integer, UserAccountVaildType> _map;

        static {
            _map = new TreeMap<Integer, UserAccountVaildType>();
            for (UserAccountVaildType num : UserAccountVaildType.values()) {
                _map.put(new Integer(num.getValue()), num);
            }
        }

        public static UserAccountVaildType lookup(int value) {
            UserAccountVaildType type = _map.get(new Integer(value));
            if (type == null) {
                return null;
            }
            return type;
        }

        public int getValue() {
            return _value;
        }

    }

    public enum IMSIType {
        unknow(0), china_yidong(1), china_liantong(2), china_dianxin(3), hongkong(4), others(5);

        private int _value = 0;

        IMSIType(int value) {
            this._value = value;
        }

        private static TreeMap<Integer, IMSIType> _map;

        static {
            _map = new TreeMap<Integer, IMSIType>();
            for (IMSIType num : IMSIType.values()) {
                _map.put(new Integer(num.getValue()), num);
            }
        }

        public static IMSIType lookup(int value) {
            IMSIType type = _map.get(new Integer(value));
            if (type == null) {
                return null;
            }
            return type;
        }

        public int getValue() {
            return _value;
        }

    }

    public static class UserAccountType {
        public final static int none = 0;
        public final static int phone = 1;
        public final static int email = 2;
        public final static int egame = 3;
        public final static int username = 4;
        public final static int udb = 5;
        public final static int imsi = 6;
        public final static int mac = 7;
        public final static int wap = 8;

    }

    public enum SMSValidateType {
        unknow(0), myw_default(1), myw_register(2), myw_findPwd(3), myw_bindPhone(4), myw_use_addressList(5);

        private int _value = 0;

        SMSValidateType(int value) {
            this._value = value;
        }

        private static TreeMap<Integer, SMSValidateType> _map;

        static {
            _map = new TreeMap<Integer, SMSValidateType>();
            for (SMSValidateType num : SMSValidateType.values()) {
                _map.put(new Integer(num.getValue()), num);
            }
        }

        public static SMSValidateType lookup(int value) {
            SMSValidateType type = _map.get(new Integer(value));
            if (type == null) {
                return null;
            }
            return type;
        }

        public int getValue() {
            return _value;
        }
    }

    public enum SMSValidateContent {
        none(0, ""), myw_default(1, "��������֤��[#@#]"), myw_register(2, "��������֤��[#@#]��10��������Ч��С����Ƕ��ڵȴ���ļ���"), myw_findPwd(
                3, "��������֤�� �����һ�������֤��Ϊ:[#@#],�����Ʊ������֤�룬10��������Ч"), myw_bindPhone(4,
                "��������֤��[#@#]��10��������Ч�����ܱ�����Ҳ���õ������������"), myw_use_addressList(5,
                "��������֤��[#@#]��10��������Ч�����ͨѶ¼�������ܱ��棬�����");
        int value = 0;
        String message = "";

        public String getMessage() {
            return this.message;
        }

        private static TreeMap<Integer, SMSValidateContent> _map;

        static {
            _map = new TreeMap<Integer, SMSValidateContent>();
            for (SMSValidateContent num : SMSValidateContent.values()) {
                _map.put(new Integer(num.value()), num);
            }
        }

        public static SMSValidateContent lookup(int value) {
            return _map.get(new Integer(value));
        }

        SMSValidateContent(int value, String message) {
            this.value = value;
            this.message = message;
        }

        public int value() {
            return this.value;
        }
    }

    /**
     * 广告位类型
     * 
     * circleAdv:循环广告位, doubleAdv:双屏广告位, singleAdv:单屏广告位 wordAdv:文件广告位,
     * insertAdv:推荐页插入广告位, game4GAdv:4G游戏使用
     */
    public enum AdvsLayoutType {
        circleAdv(1), doubleAdv(2), singleAdv(3), wordAdv(4), insertAdv(5), game4GAdv(6);
        int _value = 0;

        private static TreeMap<Integer, AdvsLayoutType> _map;

        static {
            _map = new TreeMap<Integer, AdvsLayoutType>();
            for (AdvsLayoutType num : AdvsLayoutType.values()) {
                _map.put(new Integer(num.getValue()), num);
            }
        }

        public static AdvsLayoutType lookup(int value) {
            AdvsLayoutType type = _map.get(new Integer(value));
            if (type == null) {
                return null;
            }
            return type;
        }

        AdvsLayoutType(int value) {
            this._value = value;
        }

        public int getValue() {
            return _value;
        }
    }

    /**
     * url类型
     * 
     * 1:游戏详情, 2:频道 , 3:web页面 6:下载, 7:文字, 8:图片, 9:单个游戏列表, 10:小编推荐, 11:视频
     */
    public enum UrlType {
        gameDetail(1), channel(2), webPage(3), subjectDetail(4), classifyDetail(5), gameDownload(6), word(7), pic(8), gameInfo(9), newTopicDetail(
                10), video(11);
        int _value = 0;

        private static TreeMap<Integer, UrlType> _map;

        static {
            _map = new TreeMap<Integer, UrlType>();
            for (UrlType num : UrlType.values()) {
                _map.put(new Integer(num.getValue()), num);
            }
        }

        public static UrlType lookup(int value) {
            UrlType type = _map.get(new Integer(value));
            if (type == null) {
                return null;
            }
            return type;
        }

        UrlType(int value) {
            this._value = value;
        }

        public int getValue() {
            return _value;
        }
    }

    public enum SearchSortType {
        none(0), downCountWeek(1105), firstOnlineTime(1101), shareCount(1104), commentCount(1103), downCountTotal(1102), starLevel(1106);
        int _value = 0;

        private static TreeMap<Integer, SearchSortType> _map;

        static {
            _map = new TreeMap<Integer, SearchSortType>();
            for (SearchSortType num : SearchSortType.values()) {
                _map.put(new Integer(num.getValue()), num);
            }
        }

        public static SearchSortType lookup(int value) {
            SearchSortType type = _map.get(new Integer(value));
            if (type == null) {
                return none;
            }
            return type;
        }

        SearchSortType(int value) {
            this._value = value;
        }

        public int getValue() {
            return _value;
        }
    }

    /**
     * 游戏顶和踩对应的枚举类型
     */
    public enum GameAgreeType {
        agree(1), disAgree(2);
        int _value = 0;

        private static TreeMap<Integer, GameAgreeType> _map;

        static {
            _map = new TreeMap<Integer, GameAgreeType>();
            for (GameAgreeType num : GameAgreeType.values()) {
                _map.put(new Integer(num.getValue()), num);
            }
        }

        public static GameAgreeType lookup(int value) {
            GameAgreeType type = _map.get(new Integer(value));
            if (type == null) {
                return agree;
            }
            return type;
        }

        GameAgreeType(int value) {
            this._value = value;
        }

        public int getValue() {
            return _value;
        }
    }

    public enum DownType {
        DOWNLOAD(0), DOWNLOAD_SUCCESS(1), INSTALL_SUCCESS(2);
        int _value = 0;

        DownType(int value) {
            this._value = value;
        }

        public int getValue() {
            return _value;
        }
    }

    /**
     * 
     * 1.星级;2.评论; 3.上线时间;4.下载;9.热门;10.分享
     */
    public enum OrderType {
        starLevel(1), commentCount(2), firstOnlineTime(3), downCountTotal(4), downCountWeek(9), shareCount(10);
        int _value = 0;
        private static TreeMap<Integer, OrderType> _map;

        static {
            _map = new TreeMap<Integer, OrderType>();
            for (OrderType num : OrderType.values()) {
                _map.put(new Integer(num.getValue()), num);
            }
        }

        public static OrderType lookup(int value) {
            OrderType type = _map.get(new Integer(value));
            if (type == null) {
                return null;
            }
            return type;
        }

        OrderType(int value) {
            this._value = value;
        }

        public int getValue() {
            return _value;
        }
    }
}
